// 解题思路：
// 使用 f[i] 表示字符串中 [0, i]区间 s 的数量
// 根据字符最后一个位置讨论，最后一个位置如果是 s, f[i] = f[i - 1] + 1, 如果不是 s, f[i] = f[i - 1]
// 同理，g[i] 表示字符串中 [0, i]区间 sh 的数量, h[i] 表示字符串中 [0, i]区间 shy 的数量
// 根据最后一个位置讨论，如果最后一个位置为 h, g[i] = g[i - 1] + f[i - 1], 如果不是 h, g[i] = g[i - 1]
// 如果最后一个位置为 y, h[i] = h[i - 1] + g[i - 1], 如果不是 y, h[i] = h[i - 1]
// 空间优化：
// 定义 3 个变量即可，如果最后一个位置是 s，f++,
// 是 h, g += f, 是 y, h += g

import java.util.*;
import java.io.*;

public class MultiStateDP{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String s = in.next();
        char[] sArr = s.toCharArray();

        long f = 0;
        long g = 0;
        long h = 0;

        for(int i = 1; i <= n; i++){
            if(sArr[i - 1] == 's'){
                f++;
            }else if(sArr[i - 1] == 'h'){
                g += f;
            }else if(sArr[i - 1] == 'y'){
                h += g;
            }
        }

        System.out.println(h);
    }
}
